#include <vector>
#include <map>

#include "VoltageTrace.h"
#include "PowerModel.h"

class TraceDrivenPowerModel : public PowerModel{
  VoltageTrace *vtrace;

public:

  //Electrical parameters
  double minVoltage;     // min. operating voltage, in volts
  double initialVoltage; // in volts
  double voltage;        // instantaneous voltage, in volts

  bool currentlyDead;

  //Constructor
  TraceDrivenPowerModel();

  //Reports the model's name as a string
  virtual char *Identify();

  //Reports the summary stats for the simulation
  virtual void dumpStats(FILE *f);

  virtual PowerModel::QueryResult *tick(unsigned long currentTick);
  virtual PowerModel::QueryResult *tick(unsigned long currentTick, float powerInWatts);


  //Destructor
  ~TraceDrivenPowerModel();

};
